package com.erb.mapper;

import com.erb.entity.Inform;
import com.erb.entity.InformDetailVo;
import com.erb.entity.InformVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface InformMapper {
	/**
	 * 查询所有通知
	 *
	 * @return
	 */
	List<Inform> findInforms();

	/**
	 * 查询所有通知部分信息（除去内容）
	 *
	 * @return
	 */
	List<Inform> findSimpleInforms();

	/**
	 * 通过ID查询通知详细信息
	 *
	 * @param informId
	 * @return
	 */
	InformDetailVo findInformById(@Param("informId") int informId);

	/**
	 * 通过ID查询通知部分信息（除去内容）
	 *
	 * @param informId
	 * @return
	 */
	Inform findSimpleInformById(@Param("informId") int informId);

	/**
	 * 通过接收者ID查询未读的前五条。发送时间时间降序。前五条（带发送方用户名）
	 *
	 * @return
	 */
	List<InformVo> findInformVosForUnreadTop5(@Param("recipientsId") int recipientsId);

	/**
	 * 通过接收者ID查询未读消息总数
	 *
	 * @param recipientsId
	 * @return
	 */
	int findCountUnread(@Param("recipientsId") int recipientsId);

	/**
	 * 通过接收者ID查询所有消息
	 *
	 * @return
	 */
	List<InformVo> findInformsByRecipientId(@Param("recipientsId") int recipientsId);

	/**
	 * 更改通知状态为已读
	 *
	 * @param informId
	 * @return
	 */
	int updateReadedOfTrue(@Param("informId") int informId);

	/**
	 * 保存通知
	 *
	 * @param inform
	 * @return
	 */
	int insertInform(@Param("inform") Inform inform);

	/**
	 * 查询贷款用户消息
	 * @param recipientsId
	 * @return
	 */
	List<InformVo> findInformsByRecipientsIdForLoan(int recipientsId);
}
